Case Base Learning Kapita Selekta Fisika Komputasi¶

MENGANALISIS HASIL FILTRASI SUARA BERNOISE DENGAN MENGGUNAKAN METODE LOW PASS FILTER, BAND PASS FILTER DAN HIGH PASS FILTER¶

  • Kelas: Fisika B 2020
  • Anggota :
  1. Huffaz Muhammad Abdurrofi Baith (1306620075)
  2. Muhammad Rizky Anugrah (1306620089)
  3. Vivi Fitriyani (1306620050)
  • Dosen Tercinta: Dr.rer.nat. Bambang Heru Iswanto

Latar Belakang¶

Seiring dengan perkembangan teknologi terutama dalam hal komunikasi, pengolahan sinyal suara menjadi bagian penting dalam terciptanya kecanggihan dunia informasi saat ini. Semakin pentingnya kebutuhan akan informasi mendorong berbagai penelitian terkait khususnya pengolahan sinyal digital. Salah satunya adalah pengenalan suara. Sebuah sinyal suara mengandung entitas yang mengandung informasi. Namun, terkadang sinyal suara tersebut rusak atau terganggu oleh noise. Oleh karena itu diperlukan proses filter sinyal suara. Filter sinyal suara merupakan proses yang penghapusan noise pada sinyal suara yang rusak. Ada banyak aplikasi filter di bidang Telekomunikasi, Digital Signal Processing, Image Processing dan Wireless komunikasi. Di bidang Digital Signal Processing, fungsi utama dari filter adalah untuk menghilangkan komponen yang tidak diinginkan dari sinyal noise. Noise adalah suatu sinyal gangguan yang bersifat akustik (suara), elektris, maupun elektronis yang hadir dalam suatu sistem dalam bentuk gangguan yang bukan merupakan sinyal yang diinginkan. Gangguan yang diakibatkan oleh noise dapat mengubah sinyal informasi, yang menyebabkan gelombang sinus mempunyai sinyal noise yang kecil bergabung didalamnya. Sehingga penerima tidak dapat membedakan suatu sinyal berupa informasi yang sebenarnya dari noise yang ditambahkan.

Transformasi Fourier adalah suatu model transformasi yang memindahkan domain spasial atau domain waktu menjadi domain frekuensi. Transformasi Fourier merupakan suatu proses yang banyak digunakan untuk memindahkan domain dari suatu fungsi atau obyek ke dalam domain frekuens. Di dalam pengolahan sinyal, transformasi fourier digunakan untuk mengubah domain spasial menjadi domain frekuensi. Analisa-analisa dalam domain frekuensi banyak digunakan seperti filtering. Dengan menggunakan transformasi fourier, sinyal dapat dilihat sebagai suatu obyek dalam domain frekuensi.

Filter adalah sebuah sistem yang bertujuan untuk meningkatkan kualitas sinyal dengan mengubah karakteristiknya. Karakteristik yang dimaksud bisa saja dalam bentuk gelombang, fasa, frekuensi dan amplitudo dari sinyal. Selain itu filter juga berfungsi untuk menghilangkan noise yang ada pada sinyal, memisahkan hasil kombinasi dari dua atau lebih sinyal dan juga memperoleh informasi yang terdapat pada sinyal. Dalam proses komunikasi, noise dapat menjadi faktor pengganggu dalam hasil penyampaian informasi. Begitupun ketika diimplementasikan ke dalam pengolahan sistem pengenalan suara. Data yang digunakan sebaiknya melalui filter noise terlebih dahulu. Adapun berdasarkan respon frekuensinya, filter dibagi menjadi 3 yaitu LPF (low pass filter), HPF (high pass filter), BPF (band pass filter), BSF (band stop filter).

High Pass Filter atau biasanya disingkat dengan HPF adalah Filter atau penyaring frekuensi yang dapat melewatkan sinyal frekuensi tinggi dan menghambat atau memblokir sinyal frekuensi rendah. Dengan kata lain, sinyal Frekuensi tinggi akan lebih mudah melewati High Pass Filter (HPF) sedangkan sinyal frekuensi rendah akan dihambat atau dipersulit untuk melewatinya. HPF yang ideal adalah HPF yang sama sekali tidak melewatkan sinyal dengan frekuensi dibawah frekuensi cut-off. Pada dasarnya, High Pass Filter (HPF) adalah kebalikan dari Low Pass Filter (LPF).

Low Pass Filter atau sering disingkat dengan LPF adalah Filter atau Penyaring yang melewatkan sinyal Frekuensi rendah dan menghambat atau memblokir sinyal Frekuensi tinggi. Dengan kata lain, LPF akan menyaring sinyal frekuensi tinggi dan meneruskan sinyal frekuensi rendah yang diinginkannya.

Band Pass filter (BPF) merupakan rangkaian yang melewatkan frekuensi pada daerah tertentu di antara frekuensi cut-off pertama dan frekuensi cut-off kedua dan meredam frekuensi di luar daerah tersebut. Selain itu Band Pass filter dirancang untuk melewatkan frekuensi dalam batasan tertentu dan menolak frekuensi lain diluar frekuensi yang dikehendaki. Dan Band Pass filter merupakan gabungan antara highpass dan low pass filter. Filter band pass akan meneruskan sinyal-sinyal dengan frekuensi antara (median frequency) dan menahan frekuensi di bawah dan di atas median tersebut. Band-pass filter akan melewatkan sinyal dengan frekuensi-frekuensi dalam range tertentu dan meredam sinyal dengan frekuensi-frekuensi yang lainnya.

Permasalahan¶

Perkembangan teknologi yang semakin pesat berbanding lurus dengan pengaruhnya dalam berbagai aspek kehidupan. Salah satunya penggunaan pengolahan sinyal digital terhadap sinyal suara. Dalam sistem komunikasi tidak seluruh sinyal yang dikirim akan diterima dengan baik seluruhnya oleh penerima. Adanya gangguan seperti noise, mengakibatkan sinyal suara yang diterima mengalami kecacatan atau bahkan menghilangkan informasi yang dibawa. Oleh karena itu diperlukan pengolahan sinyal suara untuk mereduksi noise pada suara.

Metode Penyelesaian¶

berdasarkan permasalahn diatas Hal yang dilakukan pada project kapita selekta ini adalah Melakukan pemprosesan terhadap suara hasil rekaman berupa suara anak kucing yang direkam dengan menggunakan smartphone, kemudian dianalisis dengan menggunakan FFT. Lalu melakukan redaman terhadap noise dengan filter yang ada di suara hasil rekaman yang selanjutnya dilakukan analisis terhadap filter yang cocok digunakan untuk suara.

fc pk.png

Import¶

In [132]:
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
from scipy.io.wavfile import write
from IPython.display import Audio
from scipy.fft import rfft, rfftfreq
import librosa
import librosa.display
import scipy.signal
%matplotlib inline
from pylab import rcParams
rcParams['figure.figsize'] = 14, 6

Fungsi¶

In [133]:
def grafik (t,signal,h):
    plt.figure(figsize=(15,9))
    plt.rcParams.update({'font.size': 15})
    plt.tick_params(colors='black', which='both')
    plt.plot(t,signal)
    #plt.xlim(0,0.01)
    plt.xlabel ('Time', fontsize = 25, color = 'black')
    plt.ylabel ('Amplitude', fontsize = 25, color = 'black')
    plt.title(f' {h}',fontsize = 25, color = 'black')
    plt.grid(True)
    plt.show()
In [134]:
def grafik_FFT(t,signal,h):
    plt.figure(figsize=(10,5))
    plt.rcParams.update({'font.size': 15})
    plt.tick_params(colors='black', which='both')
    plt.plot(t,signal)
    #plt.xlim(3500,4000)
    plt.xlabel ('Frekuensi', fontsize = 25, color = 'black')
    plt.title(f' {h}',fontsize = 25, color = 'black')
    plt.grid(True)
    plt.show()
In [135]:
def grafik_hasil(y,yf,t):
    plt.figure(figsize=(15,9))
    plt.rcParams.update({'font.size': 15})
    plt.tick_params(colors='black', which='both')
    librosa.display.waveshow(y,sr=sampling, x_axis='time');
    librosa.display.waveshow(yf,sr=sampling, x_axis='time');
    plt.xlabel('Time', fontsize = 25, color = 'black')
    plt.ylabel('Amplitude', fontsize = 25, color = 'black')
    plt.title(f'{t}', fontsize = 25, color = 'black')
    plt.grid(True)
    plt.show()

Data Audio¶

Data Audio berisi suara kucing yang direkam menggunakan handphone. Karena direkam menggunakan handphone, terdapat noise pada suara kucing tersebut.

In [136]:
audio_data, sampling = librosa.load('kucing.wav', sr=None)
print('Sampling =', sampling)
print('Durasi Audio = ', len(audio_data)/sampling)
Audio(data=audio_data,rate=sampling)
Sampling = 48000
Durasi Audio =  7.637333333333333
Out[136]:
Your browser does not support the audio element.

Grafik Data Audio¶

In [137]:
sampling = 48000
duration =  7.637333333333333
Amplitudo = 1.0/sampling
waktu = np.arange(0,duration,Amplitudo)
In [138]:
grafik(waktu,audio_data,'Data Audio')

FFT Data Audio¶

In [139]:
n = audio_data.size
yf = rfft(audio_data)
xf = rfftfreq(n, 1/sampling)
grafik_FFT(xf/2,np.abs(yf),'FFT Data Audio')

Bedasarkan grafik diatas dapat dilihat Frekuensi yang paling sering muncul ada di sekitar 1500 sehingga dapat dikatakan bahwa suara termasuk kedalam frekuensi tinggi

High Pass Filter¶

Filter Highpass adalah filter yang hanya melewatkan frekuensi diatas frekuensi cut-off (fc). Dibawah frekuensi tersebut sinyal akan diredam. Dari audio yang dibuat, dilakukan filter menggunakan algoritma High Pass Filter.

Hasil High Pass Filter¶

In [140]:
from scipy import signal
import random

def f_high(y,sr):
    b,a = signal.butter(5, 2000/(sr/2), btype='highpass')
    yf = signal.lfilter(b,a,y)
    return b,a,yf
bh,ah,yf1 = f_high(audio_data, sampling)
grafik_hasil(audio_data,yf1,'Audio Hasil HPF')
display(Audio(yf1,rate=sampling))
Your browser does not support the audio element.
In [141]:
w, h = signal.freqz(bh, ah, worN=8000)
In [142]:
plt.plot(0.5*sampling*w/np.pi, np.abs(h), 'b')
plt.plot(2000, 0.5*np.sqrt(2), 'ko')
plt.axvline(2000, color='k')
plt.xlim(1000, 3000)
plt.title("Highpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()

FFT Data Audio High Pass Filter¶

In [143]:
n = yf1.size
yfh = rfft(yf1)
xfh = rfftfreq(n, 1/sampling)
grafik_FFT(xfh/2,np.abs(yfh),'FFT Data Audio HPF')

Low Pass Filter¶

Filter Lowpass filter yang hanya melewatkan frekuensi yang lebih rendah dari frekuensi cut-off (fc). Diatas frekuensi tersebut sinyal akan diredam. Dari audio yang dibuat, dilakukan filter menggunakan algoritma Low Pass Filter.

Hasil Low Pass Filter¶

In [144]:
from scipy import signal
import random

def f_low(y,sr):
    b,a = signal.butter(5, 10000/(sr/2), btype='lowpass')
    yf = signal.lfilter(b,a,y)
    return b,a,yf
bl,al,yf2 = f_low(audio_data, sampling)
grafik_hasil(audio_data,yf2,'Audio Hasil LPF')
display(Audio(yf2,rate=sampling))
Your browser does not support the audio element.
In [145]:
wl, hl = signal.freqz(bl, al, worN=8000)
In [146]:
plt.plot(0.5*sampling*wl/np.pi, np.abs(hl), 'b')
plt.plot(10000, 0.5*np.sqrt(2), 'ko')
plt.axvline(10000, color='k')
plt.xlim(8000, 12000)
plt.title("Lowpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()

FFT Data Audio Hasil Low Pass Filter¶

In [147]:
n = yf2.size
yfl = rfft(yf2)
xfl = rfftfreq(n, 1/sampling)
grafik_FFT(xfl/2,np.abs(yfl),'FFT Data Audio LPF')

Band Pass Filter¶

Bandpass filter merupakan filter yang dapat melewatkan rentang frekuensi tertentu diantara frekuensi cut-off pertama dan frekuensi cut-off kedua. Diluar frekuensi tersebut sinyal akan diredam. Band Pass Filter merupakan penggabungan dari lowpass filter dan high pass filter. Daerah passband dibatasi oleh dua frekuensi tepi. Frekuensi tepi rendah menunujukkan batas frekuensi rendah dari suatu high pass filter dan frekuensi tepi yang sangat tinggi menunjukkan batas frekuensi tinggi dari suatu low pass filter. Bandpass filter menolak sinyal yang tidak diinginkan dan meningkatkan sistem kinerja. Dari audio yang dibuat, dilakukan filter menggunakan algoritma High Pass Filter.

Hasil Band Pass Filter¶

In [148]:
from scipy import signal
import random

def bandpass_filter(y, sr):
    b, a = signal.butter(5, [1000/(sr/2), 15000/(sr/2)], btype='band')
    yf = signal.lfilter(b, a, y)
    return b,a,yf
bb,ab,yf3 = bandpass_filter(audio_data, sampling)
grafik_hasil(audio_data,yf3,'Audio Hasil BPF')
display(Audio(yf3,rate=sampling))
Your browser does not support the audio element.
In [149]:
wb, hb = signal.freqz(bb, ab, worN=8000)
In [150]:
plt.plot(0.5*sampling*wb/np.pi, np.abs(hb), 'b')
plt.plot(1000, 0.5*np.sqrt(2), 'ko')
plt.plot(15000, 0.5*np.sqrt(2), 'ko')
plt.axvline(1000, color='k')
plt.axvline(15000, color='k')
plt.xlim(0, 16000)
plt.title("Bandpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()

FFT Data Audio Hasil Band Pass Filter¶

In [151]:
n = yf3.size
yfb = rfft(yf3)
xfb = rfftfreq(n, 1/sampling)
grafik_FFT(xfb/2,np.abs(yfb),'FFT Data Audio LPF')

Hasil Komputasi¶

Data Audio¶

In [152]:
display(Audio(audio_data,rate=sampling))
Your browser does not support the audio element.
In [153]:
grafik(waktu,audio_data,'Data Audio')
In [154]:
n = audio_data.size
yf = rfft(audio_data)
xf = rfftfreq(n, 1/sampling)
grafik_FFT(xf/2,np.abs(yf),'FFT Data Audio')

High Pass Filter¶

In [155]:
print('Pesah Suara Hasil Filter :')
display(Audio(yf1,rate=sampling))
Pesah Suara Hasil Filter :
Your browser does not support the audio element.
In [156]:
grafik_hasil(audio_data,yf1,'Audio Hasil HPF')
In [157]:
plt.plot(0.5*sampling*w/np.pi, np.abs(h), 'b')
plt.plot(2000, 0.5*np.sqrt(2), 'ko')
plt.axvline(2000, color='k')
plt.xlim(1000, 3000)
plt.title("Highpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()
In [158]:
n = yf1.size
yfh = rfft(yf1)
xfh = rfftfreq(n, 1/sampling)
grafik_FFT(xfh/2,np.abs(yfh),'FFT Data Audio HPF')

Hasil high pass filter dapat dilihat dari plotting FFT yang dihasilkan, suara yang ditimbulkan meningkat pada frekuensi tinggi dan pada frekuensi rendah cenderung menurun hal tersebut menyebabkan suara noise teredam dan suara anak kucing semakin meninggi. hal tersebut terjadi karena pada HPF meloloskan suara dengan frekuensi tinggi dan meredam suara frekuensi rendah

Low Pass Filter¶

In [159]:
print('Pesah Suara Hasil Filter :')
display(Audio(yf2,rate=sampling))
Pesah Suara Hasil Filter :
Your browser does not support the audio element.
In [160]:
grafik_hasil(audio_data,yf2,'Audio Hasil LPF')
In [161]:
plt.plot(0.5*sampling*wl/np.pi, np.abs(hl), 'b')
plt.plot(10000, 0.5*np.sqrt(2), 'ko')
plt.axvline(10000, color='k')
plt.xlim(8000, 12000)
plt.title("Lowpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()
In [162]:
n = yf2.size
yfl = rfft(yf2)
xfl = rfftfreq(n, 1/sampling)
grafik_FFT(xfl/2,np.abs(yfl),'FFT Data Audio LPF')

sedangkan pada penggunaan filter LPF dapat terlihat tidak adanya perubahan pada hasil plotting fft yang menggambarkan bahwa filter yang digunakan tidak pas sehingga tidak adanya perubahan dari suara aslinya karena pada LPH sinyal yang diloloskan adalah sinyal yang berfrekuensi tinggi hal tersebut tidak pas karena frekuensi pada suara cenderung tinggi.

Band Pass Filter¶

In [163]:
print('Pesah Suara Hasil Filter :')
display(Audio(yf3,rate=sampling))
Pesah Suara Hasil Filter :
Your browser does not support the audio element.
In [164]:
grafik_hasil(audio_data,yf3,'Audio Hasil BPF')
In [165]:
plt.plot(0.5*sampling*wb/np.pi, np.abs(hb), 'b')
plt.plot(1000, 0.5*np.sqrt(2), 'ko')
plt.plot(15000, 0.5*np.sqrt(2), 'ko')
plt.axvline(1000, color='k')
plt.axvline(15000, color='k')
plt.xlim(0, 20000)
plt.title("Bandpass Filter Frequency Response")
plt.xlabel('Frequency [Hz]')
plt.grid()
In [166]:
n = yf3.size
yfb = rfft(yf3)
xfb = rfftfreq(n, 1/sampling)
grafik_FFT(xfb/2,np.abs(yfb),'FFT Data Audio BPF')

Hasil filter Band Pass Filter dapat dilihat dari plotting FFT yang dihasilkan, suara yang ditimbulkan meningkat pada frekuensi tinggi dan pada frekuensi rendah cenderung menurun hal tersebut menyebabkan suara noise teredam dan suara anak kucing semakin meninggi sesuai dengan hasil High pass filter. hal tersebut dapat terjadi karena BPF meredam sinyal frekuensi rendah dan tinggi

Analisis¶

Pada project kali ini, dilakukan percobaan pembuatan filter untuk menghilangkan noise pada audio. Adapun data audio yang digunakan dibuat menggunakan suara hasil rekaman suara kucing dengan smartphone sehingga suara yang dihasilkan mendapatkan sedikit noise sehingga dilakukan filtering untuk meredam noise.

Data suara memiliki sampling rate dengan durasi yang memiliki kecenderungan frekuensi sekitar 1500 kemudia dilakukan Filtering dilakukan dengan filter High Pass Filter, Low Pas Filter dan Band Pass Filter. Penggunaan filter dilakukan untuk meredam suara noise berdasarkan percobaan didapatkan High Pass Filter dan Band Pass Filter dapat teredam sedangkan pada low pass filter tidak dapat teredam.

Hal tersebut dapat terjadi karena pada high pass filter merupakan filter yang melolokan nilai frekuensi tinggi dan diketahui bahwa frekuensi dari suara anak kucing tergolong tinggi. Kemudian pada band pass filter memiliki hasil yang hampir sama dengan high pass filter hal tersebut terjadi karena pada band pass filter melakukan redaman terhadap frekuensi rendah dan atas. Sedangkan, pada low pass filter tidak dapat menghasilkan perbedaan suara yang signifikan karena frekuensi yang dimiliki hampir memiliki kemiripan yang sama antara frekuensi suara yang diinginkan dengan noise

Kesimpulan¶

  • Proses perekaman suara merupakan hal yang sering dilakukan namun keterbatasan perangkat membuat suara kurang jernih karena adanya noise oleh karena itu dilakukan filtering terhadap suara agar hasil menjadi lebih baik

  • FFT dapat digunakan untuk melihat domain frekuensi yang muncul hal tersebut dapat digunakan untuk menyesuaikan filter yang akan digunakan.

  • High pass Filter, low pass filter dan band pass filter dapat digunakan sesuai dengan keadaan noise dari suara.

Referensi¶

  • Pertiwi, R. dan Agoes, S.(2017) IMPLEMENTASI FILTER FINITE IMPULSE RESPONSE UNTUK MEREDUKSI NOISE PADA SUARA MENGGUNAKAN METODE WINDOWING.JURNAL ELEKTRO, 10(2) 73-84
  • Farida, Fitri. (2017).Optimasi Lowpass Filter Mikrostrip Frekuensi 10,6 GHz dengan Metode Step-Impedansi.Jurnal Sustainable: Jurnal Hasil Penelitian dan Industri Terapan. 6(2) hal. 89-95
  • Prayogi, A & Bustamin, A. (2019). Perbandingan Kinerja Filter Butterworth Berdasarkan Spesifikasi Frekuensi untuk Pengolahan Sinyal Suara. Jurnal Techno.COM,18(4).hlm 332-339.
  • Fitria, L & Havis, A. (2018). Filtering Sinyal Menggunakan Band Pass Filter. Jurnal SIFO Mikroskil, 19(2).hlm 37-48.
  • Hendrawan, T. (2017). Sound Conversion Using Fast Fourier Transform Algoritm. Jurnal PROXIES,01(01). hlm 22-26.
  • Nashar & Fausi, M. (2020). Analisis Pengaruh Manajemen Pemberian Noise Terhadap Estimasi Direction of Arrival (DOA) dengan Teknik Pemrosesan Sinyal Fast Fourier Transform Beamforming. Jurnal EECCIS,14(02). hlm 73-76.
  • Agoes, S & Pertiwi, E. (2017). Implementasi Filter Finite Impulse Response Untuk Mereduksi Noise Pada Suara Menggunakan Metode Windowing. JURNAL ELEKTRO,10(2).hlm 73-84